package com.malou.server.ventas.venta;

import java.util.List;
import javax.servlet.http.HttpSession;
import com.malou.client.seguridad.usuario.Usuario;
import com.malou.client.util.MensajeData;
import com.malou.client.ventas.venta.DetalleVenta;
import com.malou.client.ventas.venta.Venta;
import com.malou.client.ventas.venta.VentaService;
import com.malou.server.base.util.GxtGridPaginate;
import com.malou.server.seguridad.usuario.Usuarios;
import com.malou.server.ventas.ingresostock.IngresoStocks;
import com.extjs.gxt.ui.client.data.FilterPagingLoadConfig;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;

public class VentaServiceImpl extends RemoteServiceServlet implements VentaService {

	private static final long serialVersionUID = 1L;

	@Override
	public PagingLoadResult<Venta> paginateVenta(FilterPagingLoadConfig config) {
		GxtGridPaginate paginate = new GxtGridPaginate();
		paginate.config = config;
		//ModeloPrendas.ajaxPush(new ModeloPrendaData());		
		
		return Ventas.getPaginate(paginate);
	}
	
	@Override
	public MensajeData save(Venta v, List<DetalleVenta> dv) {
		MensajeData data = new MensajeData();
		data.guardado = true;
		Usuario user = getUsuarioSession();
		v.setTienda_id(user.getIdtienda());
		
		if(user.getIdprivilegio() == 1)
			IngresoStocks.isSuperUsuario = true;
		else
			IngresoStocks.isSuperUsuario = false;
		
		if(!Ventas.save(v, dv)){
			data.guardado = false;
			data.errorTipo = Ventas.errorTipo;
			data.modeloPrenda = Ventas.modeloPrenda;
		}		
		return data;		
	}

	@Override
	public MensajeData anular(Integer id) {
		MensajeData data = new MensajeData();
		data.guardado = true;
		
		Usuario user = getUsuarioSession();
		if(user.getIdprivilegio() == 1)
			IngresoStocks.isSuperUsuario = true;
		else
			IngresoStocks.isSuperUsuario = false;
		
		if(!Ventas.anular(id)){
			data.guardado = false;
		}
		
		return data;
	}

	@Override
	public MensajeData anularAll(List<Integer> ids) {
		MensajeData data = new MensajeData();
		data.guardado = true;
		
		if(!Ventas.anularAll(ids)){
			data.guardado = false;
		}
		
		return data;
	}

	@Override
	public List<DetalleVenta> getDetalleVenta(Integer venta_id) {
		return Ventas.getDetalle(venta_id);
	}
	
	private Usuario getUsuarioSession() {
		HttpSession session = getThreadLocalRequest().getSession(true);
		if (session.getAttribute("username") != null){
			String username = (String) session.getAttribute("username");
			
	        return Usuarios.getResponsable(username);  
	    }else{
	    	return null;
	    }
	}
}
